]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shell: Use swapped signal connection for MetaWindowActor::destroy
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 1 May 2023 15:04:46 +0000 (17:04 +0200)
committerMarge Bot <marge-bot@gnome.org>
Wed, 3 May 2023 14:00:33 +0000 (14:00 +0000)
The callback would schedule a clutter_actor_destroy() on the first
argument. Unless told otherwise, this is the same actor that is
already being destroyed, so this is a no-op.

Instead, the intent is to make the clone follow up destruction of
the window actor so that it results in correct removal of this
window from the ShellWindowPreviewLayout. Use a swapped connection
to pass the clone actor as the first argument of the signal callback.

Fixes: 04c781674c ("Move WindowPreviewLayout from JS to C")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6570
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2756>

src/shell-window-preview-layout.c

index 8d8596af42bdb8f0a621b446a8c4232002ba6809..fa3cc1f6d02551079c5b0b5603c362963b95a70c 100644 (file)
@@ -394,8 +394,8 @@ shell_window_preview_layout_add_window (ShellWindowPreviewLayout *self,
     g_signal_connect (window, "position-changed",
                       G_CALLBACK (on_window_size_position_changed), self);
   window_info->window_actor_destroy_id =
-    g_signal_connect (window_actor, "destroy",
-                      G_CALLBACK (on_window_destroyed), actor);
+    g_signal_connect_swapped (window_actor, "destroy",
+                              G_CALLBACK (on_window_destroyed), actor);
   window_info->destroy_id =
     g_signal_connect (actor, "destroy",
                       G_CALLBACK (on_actor_destroyed), self);